<?php
/**
 * Created by PhpStorm.
 * User: admin
 * Date: 2021.3.23
 * Time: 9:37
 */

class Solution {
    public function intersect($arr1,$arr2)
    {
        $lenth1 = count($arr1);
        $lenth2 = count($arr2);

        if($lenth1 == 0 || $lenth2 == 0)
        {
            return [];
        }

        $newArr =[];
        $newArrArr = [];
        if($lenth1 > $lenth2) {
            for ($i=0;$i<$lenth1;$i++) {
                if(array_key_exists($arr1[$i],$newArr)) {
                    ++$newArr[$arr1[$i]];
                } else {
                    $newArr[$arr1[$i]] = 1;
                }
            }
            for ($i=0;$i<$lenth2;$i++) {
                if(array_key_exists($arr2[$i],$newArr)) {
                    $index = $newArr[$arr2[$i]];
                    if($index > 0 ) {
                        $newArrArr[] = $arr2[$i];
                    }
                    --$newArr[$arr2[$i]];
                }
            }
        } else {
            for ($i=0;$i<$lenth2;$i++) {
                if(array_key_exists($arr2[$i],$newArr)) {
                    ++$newArr[$arr2[$i]];
                } else {
                    $newArr[$arr2[$i]] = 1;
                }
            }
            for ($i=0;$i<$lenth1;$i++) {
                if(array_key_exists($arr1[$i],$newArr)) {
                    $index = $newArr[$arr1[$i]];
                    if($index > 0 ) {
                        $newArrArr[] = $arr1[$i];
                    }
                    --$newArr[$arr1[$i]];
                }
            }
        }
        return $newArrArr;

    }
}

$arr1 = [1,2,2,1];
$arr2 = [2,2];
$solution = new Solution();
$res = $solution->intersect($arr1,$arr2);
/**
 * 解题思路：
 * 1：判断哪个数组更长，然后用较长的数组作为目标对象
 * 2：$newArr[$key]=$count，key出现在较长数组的次数
 * 3：遍历较短的数组，判读$arr2[$i]]的值是否在，$newArr中，如果存在，就减去 $count,
 *
 *
 */